home *** CD-ROM | disk | FTP | other *** search
Wrap
10 REM >!RunImage for Tidy Disc Version 1.09 12/03/94 20 : 30 REM Copyright © Anthony Brion 1993/94. 40 : 50 REM *************************** Copyright Notice **************************** 60 REM * All program code is the copyright of Anthony Brion and the ‘borrowing’ * 70 REM * any part of it without the permission of the author is prohibited. * 80 REM *************************************************************************** 90 : 100 REM #turbo 110 : 120 ON ERROR PROCerror 130 : 140 RT%=TIME 150 : 160 DIM value% 1024,variable% 256 170 : 180 RENAME$="!BOOT!RUN!RUNIMAGE!SPRITES!SPRITES22!SPRITES23!HELPMESSAGESSETUPTEMPLATES!CHOICES!SETUPDESC!MENU!CONFIGSOURCERUNIMAGERBREADMEINTMETRICS0OUTLINES0OBJECT" 210 fixed%=0 220 rename%=0 230 errors%=0 240 DIM Fname% 256 250 DIM title% 246 260 CFSlength%=0 270 length%=0 320 Lenght%=0 330 CFSlength%=0 340 CFSK%=0 350 K%=0 360 Len%=0 370 : 380 OFF 390 : 400 REM #register J% 410 REM #register X% 420 REM #register Len% 430 REM #register length% 440 : 450 REM Get the full path of this utility 460 path$=FNread_system_variable_value("TidyDisc$Dir") 470 : 480 REM Extract the root directory of this path ie. upto and including the first $ 490 root$="" 500 X%=1 510 REPEAT 520 character$=MID$(path$,X%,1) 530 root$+=character$ 540 X%+=1 550 UNTIL character$="$" 560 Rootlen=LEN(root$)+1 570 : 580 REM If the root directory is in the CFS convert it to a normal directory 590 IF FNupper(LEFT$(root$,4))="CFS#" THEN root$=RIGHT$(root$,LEN(root$)-4) 600 : 610 $title%="Tidy Disc - © Anthony Brion 1994 - "+root$ 620 SYS "Wimp_CommandWindow",title% 621 OFF 625 PRINT "Tidy Disc - Freeware - Version 1.09 (12 Mar 94)"' 630 : 640 A%=0 650 B%=0 660 REM #noturbo 670 FOR X% = 1 TO LEN(root$) 680 IF B%=0 AND MID$(root$,X%,1)=":" THEN B%=X% 690 IF MID$(root$,X%,1)=":" THEN A%=X% 700 NEXT 710 REM #turbo 720 FS$=LEFT$(root$,(B%-1)) 730 PRINT"Changing filing system to ... ";FS$' 740 OSCLI(FS$) 750 A%-=1 760 Drive$=RIGHT$(root$,LEN(root$)-A%) 770 Drive$=LEFT$(Drive$,LEN(Drive$)-2) 780 PRINT "Compacting drive...... ";Drive$;" "; 790 REPEAT 800 T%=TIME 810 OSCLI("COMPACT "+Drive$) 820 UNTIL (TIME - T%) < 5 830 PRINT "(Finished)"' 840 : 850 REM Process the entire disc starting at the root directory 860 SYS"Hourglass_On" 870 PROCscan(root$) 880 SYS"Hourglass_Off" 890 : 900 REM Statistics 920 PRINT STRING$(Len%,CHR$127);' 950 PRINT " Number of fixes : ";fixed% 960 PRINT " Number of renames : ";rename%' 1030 PRINT " Number of errors : ";errors% 1040 : 1050 PRINT '"Re-compacting drive...... ";Drive$;"... "; 1060 REPEAT 1070 T%=TIME 1080 OSCLI("COMPACT "+Drive$) 1090 UNTIL (TIME - T%) < 5 1100 PRINT "Finished." 1110 : 1120 RT%=TIME-RT% 1130 RT%=RT%/100 1140 RTH%=RT%/3600 1150 RT%-=(RTH% * 3600) 1160 RTM%=RT%/60 1170 RT%-=(RTM% * 60) 1180 PRINT''" Disc tidy run time : ";FNtwo(RTH%);":";FNtwo(RTM%);":";FNtwo(RT%)'' 1190 : 1200 REM Program completed normally 1210 VDU7:REM Beep when finished. 1220 END 1230 : 1240 DEF PROCscan(root$) 1250 PRINT STRING$(Len%,CHR$127);root$; 1260 Len%=LEN(root$) 1270 : 1280 LOCAL block%,off%,name$,J%,dir%,num% 1290 DIM block% 40 1300 off% = 0 1310 : 1320 REPEAT 1330 SYS "OS_GBPB",10,root$,block%,1,off%,40,"*" TO ,,,num%,off% 1340 IF num%=1 THEN 1350 J% = 20 : REPEAT : J% += 1 : UNTIL block%?J%=0 1360 block%?J% = 13 : name$ = $(block%+20) 1370 dir% = (block%!16=2) 1380 : 1390 rootname$=root$+"."+name$ 1400 cfsrootname$="CFS#"+rootname$ 1410 : 1420 REM Reformat filenames 1430 : 1440 IF NOT dir% THEN 1450 REM Obtain the filetype 1460 TYPE$=FNreadtype(rootname$) 1470 CFSTYPE$=FNreadtype(cfsrootname$) 1480 : 1490 REM Get file size 1500 : 1510 $Fname%=cfsrootname$+CHR$0 1520 SYS"OS_File",17,Fname% TO ,,,,CFSlength% 1530 CFSlength1%=CFSlength%/1024 1540 CFSK%+=(CFSlength1%+1) 1550 : 1560 $Fname%=rootname$+CHR$0 1570 SYS"OS_File",17,Fname% TO ,,,,length% 1580 length1%=length%/1024 1590 K%+=(length1%+1) 1600 : 1610 REM CFStotal%=CFStotal%+CFSlength% 1620 REM total%=total%+length% 1630 : 1640 Uname$=FNupper(name$) 1650 IF (INSTR(RENAME$,Uname$,1)<>0) THEN 1660 done%=0 1670 CASE Uname$ OF 1680 WHEN "!BOOT" :PROCrename("!Boot",Uname$) :name$="!Boot" 1690 WHEN "!RUN" :PROCrename("!Run",Uname$) :name$="!Run" 1700 WHEN "!RUNIMAGE" :PROCrename("!RunImage",Uname$) :name$="!RunImage" 1710 WHEN "!SPRITES" :PROCrename("!Sprites",Uname$) :name$="!Sprites" 1720 WHEN "!SPRITES22" :PROCrename("!Sprites22",Uname$):name$="!Sprites22" 1730 WHEN "!SPRITES23" :PROCrename("!Sprites23",Uname$):name$="!Sprites23" 1740 WHEN "!HELP" :PROCrename("!Help",Uname$) :name$="!Help" 1750 WHEN "MESSAGES" :PROCrename("Messages",Uname$) :name$="Messages" 1760 WHEN "SPRITES" :PROCrename("Sprites",Uname$) :name$="Sprites" 1770 WHEN "SPRITES22" :PROCrename("Sprites22",Uname$) :name$="Sprites22" 1780 WHEN "SPRITES23" :PROCrename("Sprites23",Uname$) :name$="Sprites23" 1790 WHEN "SETUP" :PROCrename("Setup",Uname$) :name$="Setup" 1800 WHEN "TEMPLATES" :PROCrename("Templates",Uname$) :name$="Templates" 1810 WHEN "!CHOICES" :PROCrename("!Choices",Uname$) :name$="!Choices" 1820 WHEN "!SETUP" :PROCrename("!Setup",Uname$) :name$="!Setup" 1830 WHEN "DESC" :PROCrename("Desc",Uname$) :name$="Desc" 1840 WHEN "MENU" :PROCrename("Menu",Uname$) :name$="Menu" 1841 WHEN "!MENU" :PROCrename("!Menu",Uname$) :name$="!Menu" 1850 WHEN "!CONFIG" :PROCrename("!Config",Uname$) :name$="!Config" 1860 WHEN "SOURCE" :PROCrename("Source",Uname$) :name$="Source" 1870 WHEN "RUNIMAGERB" :PROCrename("RunImageRB",Uname$):name$="RunImageRB" 1880 WHEN "README" :PROCrename("ReadMe",Uname$) :name$="ReadMe" 1890 WHEN "INTMETRICS" :PROCrename("IntMetrics",Uname$):name$="IntMertics" 1900 WHEN "OUTLINES" :PROCrename("Outlines",Uname$) :name$="Outlines" 1930 WHEN "OBJECT" :PROCrename("Object",Uname$) :name$="Object" 1940 ENDCASE 1960 rootname$=root$+"."+name$ 1963 cfsrootname$="CFS#"+root$+"."+name$ 1965 ENDIF 1966 : 1970 REM Only continue processing if the file is type "CFSlzw" 1971 T%=0 1972 S%=0 1980 IF TYPE$="D96" THEN 1990 : 2000 IF (INSTR("DDC 3FB FF8 FC8 D69 C14 FF6",CFSTYPE$,1)<>0) THEN T%=1 2001 IF (CFSlength%<=length%) OR (CFSlength1%=length1%) THEN S%=1 2002 IF S%=1 OR T%=1 THEN 2010 OSCLI("Copy "+cfsrootname$+" "+rootname$+" F~C~V") 2020 PRINT STRING$(Len%,CHR$127);" File Info : Type - ";CFSTYPE$;" - Len - ";CFSlength%;" (";CFSlength1%;"k) : Compressed Len - ";length%;" (";length1%;"k)" 2030 PRINT" Reason : File decompressed due to "; 2031 IF T%=1 THEN PRINT "file type ";CFSTYPE$ ELSE PRINT "file size ";CFSlength%;" bytes" 2040 PRINT"Processed file : ";rootname$' 2050 Len%=0 2060 fixed%+=1 2070 : 2080 ELSE 2090 : 2100 REM To speed up directory viewer uncompress !Boot and !Sprite files 2110 IF Uname$="!BOOT" OR LEFT$(Uname$,8)="!SPRITES" THEN 2120 OSCLI("Copy "+cfsrootname$+" "+rootname$+" F~C~V") 2130 PRINT STRING$(Len%,CHR$127);" File Info : Type - ";CFSTYPE$;" - Len - ";CFSlength%;"(";CFSlength1%;"k) : Compressed Len - ";length%;"(";length1%;"k)" 2140 PRINT" Reason : ";Uname$;" file decompressed" 2150 PRINT"Processed file : ";rootname$' 2160 Len%=0 2170 fixed%+=1 2180 ENDIF 2190 ENDIF 2200 ENDIF 2210 : 2240 ELSE 2260 REM Process the next directory level down 2270 PROCscan(rootname$) 2280 ENDIF 2290 ENDIF 2300 UNTIL off%<0 2310 ENDPROC 2320 : 2330 DEFFNreadtype(name$) 2340 SYS "OS_File",5,name$ TO ,,loadaddr 2350 =MID$(STR$~(loadaddr),4,3) 2360 : 2370 DEFFNupper(n$) 2380 nn$="" 2390 : 2400 REM #noturbo 2410 FORX%=1 TO LEN(n$) 2420 A%=ASC(MID$(n$,X%,1)) 2430 IF A%<123 THEN 2440 IF A%>96 THEN 2450 A%-=32 2460 ENDIF 2470 ENDIF 2480 nn$+=CHR$(A%) 2490 NEXT 2500 REM #turbo 2510 : 2520 =nn$ 2530 : 2540 REM Get the value of a system variable 2550 DEF FNread_system_variable_value(variable$) 2560 LOCAL value_length% 2570 $variable% = variable$ + CHR$0 2580 SYS"OS_ReadVarVal",variable%,value%,1024,0,3 TO ,,value_length% 2590 ?(value% + value_length%) = 13 2600 = $value% 2610 : 2620 REM Check format 2630 DEFPROCrename(c$,Uc$) 2640 IF done%=1 THEN ENDPROC 2650 IF name$=c$ THEN DONE%=1:ENDPROC 2660 IF name$<>c$ THEN 2670 IF Uc$=Uname$ THEN 2680 PROCReformat(rootname$,root$+"."+c$) 2690 done%=1 2700 ENDIF 2710 ENDIF 2720 ENDPROC 2730 : 2740 REM Reformat the filename 2750 DEFPROCReformat(n$,nn$) 2760 LOCAL ERROR 2770 ON ERROR LOCAL PRINT "* File open : ";nn$:errors%=+1:ENDPROC 2780 OSCLI("ACCESS "+n$+" RW") 2790 OSCLI("RENAME "+n$+" "+nn$) 2800 RESTORE ERROR 2810 : 2820 PRINT STRING$(Len%,CHR$127);" File Info : Type - ";CFSTYPE$;" - Len - ";CFSlength%;"(";CFSlength1%;"k) : Compressed Len - ";length%;"(";length1%;"k)" 2830 PRINT" Reason : File name renamed" 2840 PRINT" Renamed file : ";n$ 2850 PRINT" To file : ";nn$' 2860 Len%=0 2870 rename%+=1 2900 ENDPROC 2910 : 2920 DEFFNtwo(A%) 2930 A$=STR$(A%) 2940 IFLEN(A$)=1 THENA$="0"+A$ 2950 =A$ 2960 : 2970 REM Error handler 2980 DEFPROCerror 2990 IF ERR = 17 THEN 3000 PRINT''"Program aborted by user....":SYS"Hourglass_Off":ON 3010 PRINT '"Re-compacting drive...... ";Drive$;" "; 3020 REPEAT 3030 T%=TIME 3040 OSCLI("COMPACT "+Drive$) 3050 UNTIL (TIME - T%) < 5 3060 PRINT "(Finished)" 3070 END 3080 ENDIF 3090 : 3100 REPORT:PRINT;" at line ";ERL:SYS"Hourglass_Off":ON:END 3110 ENDPROC 3120